home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 38 / Amiga Format CD38 (1999-03-15)(Future Publishing)(GB)(Track 1 of 3)[!][issue 1999-04].iso / -screenplay- / shareware / 6-tris / 6-tris++.amos / 6-tris++.amosSourceCode next >
AMOS Source Code  |  1999-01-25  |  35KB  |  1,320 lines

  1. ' 6-Tris++ - Six player tetris with bells and whistles by James Daniels '96/97 
  2. '
  3. ' METHOD  ROTATE      DROP     LEFT     RIGHT        
  4. ' KEYS 1  s           z        l-alt    l-amiga      
  5. ' KEYS 2  return      r-shift  r-amiga  r-alt    
  6. ' JOYS    up or fire  down     left     right  
  7. '
  8. ' To do: - Show where blocks will land when dropped  
  9. '        - Make smoother 
  10. '        - Make speed machine independent
  11.  
  12. ' Tidy-up  
  13. Trap Screen Close 0
  14. Hide On 
  15. Track Loop On 
  16. Led Off 
  17. Track Play 3
  18.  
  19. If Prg State=-1
  20.    Break Off 
  21. End If 
  22.  
  23. Global TIMESLOADED,MULTIPLAYERGAMESPLAYED,TRADITIONALGAMESPLAYED,HISCORE
  24. If Exist("S:6-Tris.Dat")
  25.    Open In 1,"S:6-Tris.Dat"
  26.    Input #1,TIMESLOADED
  27.    Input #1,MULTIPLAYERGAMESPLAYED
  28.    Input #1,TRADITIONALGAMESPLAYED
  29.    Input #1,HISCORE
  30.    Close 1
  31. Else 
  32.    TIMESLOADED=0
  33.    MULTIPLAYERGAMESPLAYED=0
  34.    TRADITIONALGAMESPLAYED=0
  35.    HISCORE=0
  36. End If 
  37. Inc TIMESLOADED
  38.  
  39. ' Graphics setup 
  40. Erase 1
  41. Screen Open 1,640,64,4,Hires+Laced
  42. Screen Hide 1
  43. Curs Off 
  44. Flash Off 
  45. Cls 0
  46. Palette $0,$0,$0,$0
  47. D1=Logbase(0)
  48. D2=Logbase(1)
  49. Screen Display 1,,139,,
  50. Unpack 11 To 0
  51. Screen Hide 0
  52. S=Logbase(0)
  53. Copy S,S+4320 To D1
  54. Copy S+4800,S+9120 To D2
  55. Screen Close 0
  56. Screen Show 1
  57. Wait Vbl 
  58. Fade 4,$0,$FFF,$0,$FFF
  59. FINTIM=Timer+200
  60. Unpack 10 To 0
  61. Screen Hide 0
  62. Global NNN
  63. NNN=0
  64.  
  65. _GT[249,187,276,192]
  66. For X=1 To 317 Step 4
  67.    _GT[X,181,X+3,186]
  68. Next 
  69. For X=277 To 317 Step 4
  70.    _GT[X,187,X+3,192]
  71. Next 
  72.  
  73. _GT[0,0,54,123]
  74. _GT[97,71,134,76]
  75. _GT[97,77,135,106]
  76. _GT[55,107,104,121]
  77. _GT[137,0,279,102]
  78. _GT[280,0,316,64]
  79. _GT[280,64,319,124]
  80.  
  81. _GT[105,107,147,124]
  82. _GT[148,108,226,123]
  83. For Y=124 To 158 Step 17
  84.    _GT[0,Y,129,Y+15]
  85.    _GT[130,Y,259,Y+15]
  86. Next 
  87. _GT[0,187,115,201]
  88. _GT[0,202,115,216]
  89.  
  90. _GT[262,110,278,174]
  91.  
  92. For X=55 To 90 Step 7
  93.    _GT[X,0,X+6,102]
  94. Next 
  95. For X=97 To 127 Step 5
  96.    For Y=0 To 25 Step 5
  97.       _GT[X,Y,X+5,Y+5]
  98.    Next 
  99. Next 
  100. For X=97 To 133 Step 4
  101.    _GT[X,65,X+3,70]
  102. Next 
  103. For Y=33 To 58 Step 5
  104.    _GT[96,Y,136,Y+4]
  105. Next 
  106.  
  107. Dim _SCORE(5),_BLOCKS(999),_NEXTBLOCK(5),_BLOCKDATAX(6,3),_BLOCKDATAY(6,3),_CHECKPOINTSX(6,3,3),_CHECKPOINTSY(6,3,3),_DELAY(5)
  108. Dim _BLOCKAX(5),_BLOCKY(5),_BLOCKX(5),_BLOCKR(5),_BLOCKT(5),_BLOCKYS(5),_MODE(5),_REMOVINGLINE(5,3),_ALIVE(5),_PREVADD(5),_PREVROTATE(5),_LEVEL(5)
  109. Global _SCORE(),_NEXTBLOCK(),_BLOCKS(),_BLOCKDATAX(),_BLOCKDATAY(),_BLOCKAX(),_BLOCKY(),_BLOCKX(),_BLOCKR(),_BLOCKT(),_BLOCKYS(),_PREVADD(),_ALIVE(),ADX,ADY,_MODE,_DELAY
  110. _MODE=1
  111. For Z=0 To 5
  112.    _DELAY(Z)=0
  113.    _LEVEL(Z)=0
  114.    _PREVROTATE=0
  115.    _SCORE(Z)=0
  116.    _NEXTBLOCK(Z)=-1
  117.    _MODE(Z)=0
  118.    _ALIVE(Z)=0
  119.    _PREVADD(Z)=0
  120. Next 
  121. 'alive: 1=alive, 0=dead (waiting to start), -1=dead (no restart) 
  122. 'modes: 0=standard (falling block)  >0=fading line (removingline(player,lineno))  <0=fading in block   
  123. Restore BLOCKSDAT
  124. For A=0 To 6
  125.    For B=0 To 3
  126.       Read _BLOCKDATAX(A,B)
  127.       Read _BLOCKDATAY(A,B)
  128.    Next 
  129. Next 
  130. For Z=0 To 999
  131.    _BLOCKS(Z)=Rnd(6)
  132. Next 
  133.  
  134. Degree 
  135. For B=0 To 6
  136.    Cls 0
  137.    For R=0 To 3
  138.       D#=(R*360)/16
  139.       For P=0 To 3
  140.          X=_BLOCKDATAX(B,P)+2
  141.          Y=_BLOCKDATAY(B,P)+2
  142.          If R>0
  143.             DIST#=Sqr((X*X)+(Y*Y))
  144.             If DIST#<>0
  145.                ANGLE#=Asin(-Y/DIST#)
  146.                If X>0
  147.                   If Y<0
  148.                      ANGLE#=-180-ANGLE#
  149.                   Else 
  150.                      ANGLE#=180-ANGLE#
  151.                   End If 
  152.                End If 
  153.                ANGLE#=(ANGLE#-D#)+180
  154.             End If 
  155.             NX#=(Cos(ANGLE#)*DIST#)
  156.             NY#=(Sin(ANGLE#)*DIST#)
  157.             If NX#-Int(NX#)=>0.5
  158.                NNX=NX#+1
  159.             Else 
  160.                NNX=NX#
  161.             End If 
  162.             If NY#-Int(NY#)=>0.5
  163.                NNY=NY#+1
  164.             Else 
  165.                NNY=NY#
  166.             End If 
  167.             Paste Bob 5+NNX,5+NNY+(17*R),119+(B*6)+R
  168.             Paste Bob 22+NNY,5-NNX+(17*R),119+(B*6)+R
  169.             Paste Bob 39-NNX,5-NNY+(17*R),119+(B*6)+R
  170.             Paste Bob 56-NNY,5+NNX+(17*R),119+(B*6)+R
  171.          Else 
  172.             Paste Bob 5+X,5+Y,119+(B*6)
  173.             Paste Bob 22+Y,5-X,119+(B*6)
  174.             Paste Bob 39-X,5-Y,119+(B*6)
  175.             Paste Bob 56-Y,5+X,119+(B*6)
  176.             _CHECKPOINTSX(B,0,P)=(5+X)+1
  177.             _CHECKPOINTSY(B,0,P)=(5+Y)+3
  178.             _CHECKPOINTSX(B,1,P)=(5-Y)+1
  179.             _CHECKPOINTSY(B,1,P)=(5+X)+3
  180.             _CHECKPOINTSX(B,2,P)=(5-X)+1
  181.             _CHECKPOINTSY(B,2,P)=(5-Y)+3
  182.             _CHECKPOINTSX(B,3,P)=(5+Y)+1
  183.             _CHECKPOINTSY(B,3,P)=(5-X)+3
  184.          End If 
  185.       Next 
  186.    Next 
  187.    For X=0 To 3
  188.       For Y=0 To 3
  189.          _GT[X*17,Y*17,(X*17)+16,(Y*17)+16]
  190.       Next 
  191.    Next 
  192. Next 
  193. For B=0 To 6
  194.    Cls 0
  195.    For X=0 To 9
  196.       Paste Bob(X*4)-1,-1,119+(B*6)
  197.    Next 
  198.    _GT[0,0,40,4]
  199. Next 
  200. Make Mask 
  201.  
  202. Screen 1
  203. While Timer<FINTIM
  204.    Led Off 
  205.    Wait Vbl 
  206. Wend 
  207. Fade 4,$0,$0,$FFF,$FFF
  208. FINTIM=Timer+200
  209. Screen 0
  210.  
  211. Cls 0
  212. N=30
  213. For Y=0 To 255 Step 2
  214.    For X=0 To 170
  215.       N=(Rnd(4)+29+N)/2
  216.        Extension_12_0394 X,Y,N
  217.    Next 
  218. Next 
  219. _GT[0,0,171,256]
  220.  
  221. Screen 1
  222. While Timer<FINTIM
  223.    Led Off 
  224.    Wait Vbl 
  225. Wend 
  226. Fade 4,$0,$0,$0,$0
  227. FINTIM=Timer+60
  228. Screen 0
  229.  
  230. Cls 0
  231. N=0
  232. For Y=0 To 132 Step 132
  233.    For X=1 To 117 Step 58
  234.       Paste Bob X,Y,93
  235.       Paste Bob X-1,Y,111+N
  236.       Inc N
  237.    Next 
  238. Next 
  239. Paste Bob 210,108,101
  240. _UPDATEGAMEMODE
  241. Paste Bob 178,0,97
  242. ADX=11
  243. ADY=0
  244. For Z=0 To 5
  245.    _DOSCORE[Z]
  246.    _ADDNEWBLOCK[Z]
  247.    Paste Bob ADX+2,ADY+15,98
  248.    Add ADX,58
  249.    If ADX>127
  250.       ADX=11
  251.       ADY=132
  252.    End If 
  253. Next 
  254. Paste Bob 276,126,1
  255.  
  256. While Timer<FINTIM
  257.    Led Off 
  258.    Wait Vbl 
  259. Wend 
  260. Screen Close 1
  261.  
  262. Screen Open 1,320,256,32,Lowres
  263. Screen Hide 1
  264. Flash Off 
  265. Curs Off 
  266. For Z=0 To 31
  267.    Colour Z,$0
  268. Next 
  269. Screen Copy 0 To 1
  270. Double Buffer 
  271. Autoback 0
  272. Bob Update Off 
  273. Screen Show 1
  274. Fade 1 To -1
  275.  
  276. _CURRSCORE=0
  277. Timer=0
  278. SCY=42
  279. SCYS=0
  280. POKAY=1
  281. PPOKAY=1
  282. _DELAY=0
  283. _COPYALL=0
  284. _UPDATEHIGHSCORE=1
  285. Screen 0
  286. For Z=0 To 6 Step 2
  287.    Sprite Z,320+(Z*15),233,110
  288.    N$="S: I Y>YH(0,256) J I L Y=Y+3 ; I: L R0=V("+Right$(Str$(Z/2),1)+") ; I R0=0 J L ; L Y=YH(0,256-R0) ; L: P ; J S"
  289.    Amal Z,N$
  290.    Amal On Z
  291. Next 
  292. Clear Key 
  293. Repeat 
  294.    Screen 0
  295.    
  296.    For _CHECKMODE=1 To 3
  297.       If Key State(79+_CHECKMODE)
  298.          _MODE=_CHECKMODE
  299.          _UPDATEGAMEMODE
  300.          _DELAY=2
  301.          _COPYALL=2
  302.       End If 
  303.    Next 
  304.    
  305.    If Key State(83)
  306.       TEMP#=MULTIPLAYERGAMESPLAYED+TRADITIONALGAMESPLAYED
  307.       TEMP#=TEMP#/TIMESLOADED
  308.       Fix 2
  309.       _MODE=4
  310.       _UPDATEGAMEMODE
  311.       _DELAY=2
  312.       _COPYALL=2
  313.       Screen 1
  314.       Screen Copy 0,0,0,319,255 To 1,0,0
  315.       Ink 0,0,0
  316.       Bar 0,0 To 170,255
  317.       Paste Bob 0,0,294
  318.       Screen Swap 
  319.       Wait Vbl 
  320.       Screen Copy 0,0,0,319,255 To 1,0,0
  321.       Ink 0,0,0
  322.       Bar 0,0 To 170,255
  323.       Paste Bob 0,0,294
  324.       Screen Swap 
  325.       Wait Vbl 
  326.       Repeat 
  327.          Wait Vbl 
  328.       Until Key State(83)=0
  329.       
  330.       Restore TYPEDAT
  331.       Read LINE$
  332.       CX=-1
  333.       CY=4
  334.       ST=0
  335.       Repeat 
  336.          For _CHECKMODE=1 To 3
  337.             If Key State(79+_CHECKMODE)
  338.                _MODE=_CHECKMODE
  339.             End If 
  340.          Next 
  341.          If Key State(69)
  342.             _FINISH
  343.          End If 
  344.          
  345.          Bob Clear 
  346.          If CX>0
  347.             Paste Bob CX*4,CY,Asc(Mid$(LINE$,CX,1))-30
  348.          End If 
  349.          Inc CX
  350.          If CX>Len(LINE$)
  351.             CX=1
  352.             Add CY,6
  353.             Read LINE$
  354.             If LINE$="END"
  355.                Restore TYPEDAT
  356.             End If 
  357.             If LINE$="BREAK" or LINE$="END"
  358.                XIT=0
  359.                Clear Key 
  360.                Repeat 
  361.                   ST=1-ST
  362.                   If ST=1
  363.                      Bob 0,CX*4,CY,61
  364.                   Else 
  365.                      Bob Off 0
  366.                   End If 
  367.                   Bob Update 
  368.                   Wait Vbl 
  369.                   For _CHECKMODE=1 To 3
  370.                      If Key State(79+_CHECKMODE)
  371.                         _MODE=_CHECKMODE
  372.                         XIT=1
  373.                      End If 
  374.                   Next 
  375.                   If Key State(69)
  376.                      _FINISH
  377.                   End If 
  378.                   If Inkey$<>""
  379.                      XIT=1
  380.                   End If 
  381.                   If Fire(0) or Fire(1) or Peek($BFD000)<>255
  382.                      XIT=1
  383.                   End If 
  384.                Until XIT=1
  385.                Ink 0,0,0
  386.                Bar 0,0 To 170,255
  387.                Paste Bob 0,0,294
  388.                Screen Swap 
  389.                Wait Vbl 
  390.                Ink 0,0,0
  391.                Bar 0,0 To 170,255
  392.                Paste Bob 0,0,294
  393.                Screen Swap 
  394.                Wait Vbl 
  395.                CX=-1
  396.                CY=4
  397.                Read LINE$
  398.             End If 
  399.          End If 
  400.          If CX>0
  401.             Paste Bob CX*4,CY,Asc(Mid$(LINE$,CX,1))-30
  402.          End If 
  403.          ST=1-ST
  404.          If ST=1
  405.             Bob 0,CX*4,CY,61
  406.          Else 
  407.             Bob Off 0
  408.          End If 
  409.          Bob Draw 
  410.          Screen Swap 
  411.          Wait Vbl 
  412.       Until _MODE<>4
  413.       
  414.       Screen 1
  415.       Bob Off 0
  416.       Bob Update 
  417.       Wait Vbl 
  418.       Bob Update 
  419.       Wait Vbl 
  420.       Screen Copy 0,0,0,319,255 To 1,0,0
  421.       Screen Swap 
  422.       Wait Vbl 
  423.       Screen Copy 0,0,0,319,255 To 1,0,0
  424.       Screen Swap 
  425.       Wait Vbl 
  426.       Screen 0
  427.       _UPDATEGAMEMODE
  428.    End If 
  429.    
  430.    If _DELAY>0
  431.       Ink 0,0,0
  432.       NADX=11
  433.       NADY=0
  434.       _BLOCK=Rnd(999)
  435.       For Z=0 To 5
  436.          _LEVEL(Z)=0
  437.          If _MODE<>1
  438.             _NEXTBLOCK(Z)=_BLOCK
  439.          End If 
  440.          _ALIVE(Z)=0
  441.          Bar NADX,NADY To NADX+39,NADY+99
  442.          Paste Bob NADX+2,NADY+15,98
  443.          Add NADX,58
  444.          If NADX>127
  445.             NADX=11
  446.             NADY=132
  447.          End If 
  448.       Next 
  449.       If _DELAY=1
  450.          Wait 100
  451.       End If 
  452.       _DELAY=0
  453.       POKAY=1
  454.       PPOKAY=1
  455.       Timer=0
  456.    End If 
  457.    
  458.    Add _CURRSCORE,1,0 To 5
  459.    _DOSCORE[_CURRSCORE]
  460.    
  461.    TIM=5-(Timer/50)
  462.    
  463.    ' Read in all the control stuff. Note that you MUST read the fire buttons before the directions. Odd but true. 
  464.    KK=Key Shift
  465.    _NDDIR=Peek($BFD000)
  466.    _DDIR=Peek($BFE101)
  467.    
  468.    ADX=11
  469.    ADY=0
  470.    
  471.    For Z=0 To 5
  472.       If _MODE=1 or(TIM<0 and POKAY=0)
  473.          If _ALIVE(Z)=1
  474.             
  475.             If _MODE(Z)=0
  476.                CB=_NEXTBLOCK(Z)
  477.                Add CB,-1,0 To 999
  478.                
  479.                _HORIZ=0
  480.                _DROP=0
  481.                _ROTATE=0
  482.                If Z=0
  483.                   If Jleft(1)
  484.                      Dec _HORIZ
  485.                   End If 
  486.                   If Jright(1)
  487.                      Inc _HORIZ
  488.                   End If 
  489.                   If Jdown(1)
  490.                      _DROP=1
  491.                   End If 
  492.                   If Fire(1) or Jup(1)
  493.                      _ROTATE=1
  494.                   End If 
  495.                End If 
  496.                If Z=1
  497.                   If Jleft(0)
  498.                      Dec _HORIZ
  499.                   End If 
  500.                   If Jright(0)
  501.                      Inc _HORIZ
  502.                   End If 
  503.                   If Jdown(0)
  504.                      _DROP=1
  505.                   End If 
  506.                   If Fire(0) or Jup(0)
  507.                      _ROTATE=1
  508.                   End If 
  509.                End If 
  510.                If Z=2
  511.                   If Btst(2,_DDIR)=0
  512.                      Dec _HORIZ
  513.                   End If 
  514.                   If Btst(3,_DDIR)=0
  515.                      Inc _HORIZ
  516.                   End If 
  517.                   If Btst(1,_DDIR)=0
  518.                      _DROP=1
  519.                   End If 
  520.                   If Btst(0,_DDIR)=0 or Btst(2,_NDDIR)=0
  521.                      _ROTATE=1
  522.                   End If 
  523.                End If 
  524.                If Z=3
  525.                   If Btst(6,_DDIR)=0
  526.                      Dec _HORIZ
  527.                   End If 
  528.                   If Btst(7,_DDIR)=0
  529.                      Inc _HORIZ
  530.                   End If 
  531.                   If Btst(5,_DDIR)=0
  532.                      _DROP=1
  533.                   End If 
  534.                   If Btst(4,_DDIR)=0 or Btst(0,_NDDIR)=0
  535.                      _ROTATE=1
  536.                   End If 
  537.                End If 
  538.                If Z=4
  539.                   If Btst(4,KK)
  540.                      Dec _HORIZ
  541.                   End If 
  542.                   If Btst(6,KK)
  543.                      Inc _HORIZ
  544.                   End If 
  545.                   If Key State(49)
  546.                      _DROP=1
  547.                   End If 
  548.                   If Key State(33)
  549.                      _ROTATE=1
  550.                   End If 
  551.                End If 
  552.                If Z=5
  553.                   If Btst(7,KK)
  554.                      Dec _HORIZ
  555.                   End If 
  556.                   If Btst(5,KK)
  557.                      Inc _HORIZ
  558.                   End If 
  559.                   If Btst(1,KK)
  560.                      _DROP=1
  561.                   End If 
  562.                   If Key State(68)
  563.                      _ROTATE=1
  564.                   End If 
  565.                End If 
  566.                
  567.                If _BLOCKAX(Z)=_BLOCKX(Z)
  568.                   If _HORIZ<>0
  569.                      If _DELAY(Z)=0 or _DELAY(Z)>2
  570.                         TB=_BLOCKAX(Z)
  571.                         Add TB,_HORIZ*4
  572.                         PASSED=1
  573.                         For N=0 To 3
  574.                            X=_CHECKPOINTSX(_BLOCKS(CB),_BLOCKR(Z),N)+TB
  575.                            Y=_CHECKPOINTSY(_BLOCKS(CB),_BLOCKR(Z),N)+(_BLOCKY(Z)/8)
  576.                            If Extension_12_0470(ADX+X,ADY+Y)>0
  577.                               PASSED=0
  578.                            End If 
  579.                            If X<0
  580.                               PASSED=0
  581.                            End If 
  582.                            If X>39
  583.                               PASSED=0
  584.                            End If 
  585.                         Next 
  586.                         If PASSED=1
  587.                            _BLOCKAX(Z)=TB
  588.                         End If 
  589.                      End If 
  590.                      Inc _DELAY(Z)
  591.                   Else 
  592.                      _DELAY(Z)=0
  593.                   End If 
  594.                Else 
  595.                   Add _BLOCKX(Z),Min(2,Max(-2,_BLOCKAX(Z)-_BLOCKX(Z)))
  596.                End If 
  597.                If _ROTATE=0
  598.                   _PREVROTATE(Z)=0
  599.                End If 
  600.                If _BLOCKT(Z)=0
  601.                   If _ROTATE=1 and _PREVROTATE(Z)=0
  602.                      _PREVROTATE(Z)=1
  603.                      TB=_BLOCKR(Z)
  604.                      Add TB,1,0 To 3
  605.                      PASSED=1
  606.                      For N=0 To 3
  607.                         X=_CHECKPOINTSX(_BLOCKS(CB),TB,N)+_BLOCKAX(Z)
  608.                         Y=_CHECKPOINTSY(_BLOCKS(CB),TB,N)+(_BLOCKY(Z)/8)
  609.                         If Extension_12_0470(ADX+X,ADY+Y)>0
  610.                            PASSED=0
  611.                         End If 
  612.                         If X<0
  613.                            PASSED=0
  614.                         End If 
  615.                         If X>39
  616.                            PASSED=0
  617.                         End If 
  618.                      Next 
  619.                      If PASSED=1
  620.                         _BLOCKT(Z)=1
  621.                         _BLOCKR(Z)=TB
  622.                      End If 
  623.                   End If 
  624.                Else 
  625.                   Add _BLOCKT(Z),1,0 To 3
  626.                End If 
  627.                If _DROP=1
  628.                   If _BLOCKYS(Z)<24
  629.                      Add _BLOCKYS(Z),6
  630.                   End If 
  631.                Else 
  632.                   _BLOCKYS(Z)=1
  633.                   If _MODE=1
  634.                      _BLOCKYS(Z)=Min(24,(_LEVEL(Z)/15)+1)
  635.                   End If 
  636.                End If 
  637.                FAILED=0
  638.                For N=0 To 3
  639.                   X=_CHECKPOINTSX(_BLOCKS(CB),_BLOCKR(Z),N)+_BLOCKAX(Z)
  640.                   Y=_CHECKPOINTSY(_BLOCKS(CB),_BLOCKR(Z),N)+(_BLOCKY(Z)/8)
  641.                   If Extension_12_0470(ADX+X+1,ADY+Y+4)>0
  642.                      FAILED=1
  643.                   End If 
  644.                Next 
  645.                If FAILED=1
  646.                   For N=0 To 3
  647.                      X=4*Int((_CHECKPOINTSX(_BLOCKS(CB),_BLOCKR(Z),N)+_BLOCKAX(Z))/4)
  648.                      Y=4*Int((_CHECKPOINTSY(_BLOCKS(CB),_BLOCKR(Z),N)+(_BLOCKY(Z)/8))/4)
  649.                      Paste Bob X+ADX-1,Y+ADY-1,119+(_BLOCKS(CB)*6)
  650.                   Next 
  651.                   N=0
  652.                   For Y=0 To 24
  653.                      FULLLINE=1
  654.                      For X=0 To 9
  655.                         P= Extension_12_0470((X*4)+ADX,(Y*4)+ADY)
  656.                         If P=0
  657.                            FULLLINE=0
  658.                         End If 
  659.                      Next 
  660.                      If FULLLINE=1
  661.                         _REMOVINGLINE(Z,N)=Y
  662.                         Inc N
  663.                      End If 
  664.                   Next 
  665.                   If N>0
  666.                      If N=1
  667.                         FF=5
  668.                      End If 
  669.                      If N=2
  670.                         FF=15
  671.                      End If 
  672.                      If N=3
  673.                         FF=30
  674.                      End If 
  675.                      If N=4
  676.                         FF=60
  677.                      End If 
  678.                      Add _SCORE(Z),FF+2
  679.                      If _MODE=1
  680.                         If _SCORE(Z)>HISCORE
  681.                            HISCORE=_SCORE(Z)
  682.                            _UPDATEHIGHSCORE=1
  683.                         End If 
  684.                      End If 
  685.                      If N>2
  686.                         SCY=42
  687.                         SCYS=(N-2)*3
  688.                      End If 
  689.                      If _MODE=2
  690.                         NN=N-1
  691.                         If NN>0
  692.                            NADX=11
  693.                            NADY=0
  694.                            For T=0 To 5
  695.                               If T<>Z
  696.                                  If _ALIVE(T)=1
  697.                                     Add _BLOCKY(T),-NN*32
  698.                                     _BLOCKY(T)=Max(_BLOCKY(T),-4)
  699.                                     Screen Copy 0,NADX,NADY+(NN*4),NADX+40,NADY+100 To 0,NADX,NADY
  700.                                     Ink 0,0,0
  701.                                     Bar NADX,NADY+100-(NN*4) To NADX+39,NADY+99
  702.                                     For A=1 To NN
  703.                                        Paste Bob NADX,NADY-(A*4)+100,287+Z
  704.                                        R=Rnd(9)
  705.                                        Bar NADX+(4*R),NADY-(A*4)+100 To NADX+(4*R)+3,NADY-(A*4)+103
  706.                                     Next 
  707.                                     For A=0 To 3
  708.                                        Add _REMOVINGLINE(T,A),-NN
  709.                                     Next 
  710.                                  End If 
  711.                               End If 
  712.                               Add NADX,58
  713.                               If NADX>127
  714.                                  NADX=11
  715.                                  NADY=132
  716.                               End If 
  717.                            Next 
  718.                         End If 
  719.                      End If 
  720.                      If _MODE=3
  721.                         NN=N-1
  722.                         If NN>0
  723.                            NXT=Z
  724.                            Repeat 
  725.                               Add NXT,1,0 To 5
  726.                            Until _ALIVE(NXT)=1
  727.                            PREV=Z
  728.                            Repeat 
  729.                               Add PREV,-1,0 To 5
  730.                            Until _ALIVE(PREV)=1
  731.                            NADX=11
  732.                            NADY=0
  733.                            For T=0 To 5
  734.                               If T=NXT or T=PREV
  735.                                  If _ALIVE(T)=1
  736.                                     Add _BLOCKY(T),-NN*32
  737.                                     _BLOCKY(T)=Max(_BLOCKY(T),-4)
  738.                                     Screen Copy 0,NADX,NADY+(NN*4),NADX+40,NADY+100 To 0,NADX,NADY
  739.                                     Ink 0,0,0
  740.                                     Bar NADX,NADY+100-(NN*4) To NADX+39,NADY+99
  741.                                     For A=1 To NN
  742.                                        Paste Bob NADX,NADY-(A*4)+100,287+Z
  743.                                        R=Rnd(9)
  744.                                        Bar NADX+(4*R),NADY-(A*4)+100 To NADX+(4*R)+3,NADY-(A*4)+103
  745.                                     Next 
  746.                                     For A=0 To 3
  747.                                        Add _REMOVINGLINE(T,A),-NN
  748.                                     Next 
  749.                                  End If 
  750.                               End If 
  751.                               Add NADX,58
  752.                               If NADX>127
  753.                                  NADX=11
  754.                                  NADY=132
  755.                               End If 
  756.                            Next 
  757.                         End If 
  758.                      End If 
  759.                      While N<4
  760.                         _REMOVINGLINE(Z,N)=-1
  761.                         Inc N
  762.                      Wend 
  763.                      _MODE(Z)=1
  764.                      _PREVADD(Z)=0
  765.                   Else 
  766.                      Inc _SCORE(Z)
  767.                      If _MODE=1
  768.                         If _SCORE(Z)>HISCORE
  769.                            HISCORE=_SCORE(Z)
  770.                            _UPDATEHIGHSCORE=1
  771.                         End If 
  772.                      End If 
  773.                      Inc _LEVEL(Z)
  774.                      _ADDNEWBLOCK[Z]
  775.                   End If 
  776.                Else 
  777.                   _PREVADD(Z)=0
  778.                End If 
  779.                Add _BLOCKY(Z),_BLOCKYS(Z)
  780.             Else 
  781.                If _MODE(Z)>0
  782.                   For N=0 To 3
  783.                      Y=_REMOVINGLINE(Z,N)
  784.                      If Y>-1
  785.                         Ink 0,0,0
  786.                         Bar ADX,ADY+(Y*4) To ADX+39,ADY+(Y*4)+3
  787.                         If _MODE(Z)>6
  788.                            Screen Copy 0,ADX,ADY,ADX+40,ADY+(Y*4) To 0,ADX,ADY+4
  789.                            Bar ADX,ADY To ADX+39,ADY+3
  790.                         Else 
  791.                            Paste Bob ADX,ADY+(Y*4),168+_MODE(Z)
  792.                         End If 
  793.                      Else 
  794.                         N=4
  795.                      End If 
  796.                   Next 
  797.                   If _MODE(Z)>6
  798.                      _ADDNEWBLOCK[Z]
  799.                      _MODE(Z)=0
  800.                   Else 
  801.                      Inc _MODE(Z)
  802.                   End If 
  803.                End If 
  804.             End If 
  805.             
  806.             
  807.          Else 
  808.             If _MODE=1
  809.                _START=0
  810.                If Z=0
  811.                   If Jdown(1)
  812.                      _START=1
  813.                   End If 
  814.                End If 
  815.                If Z=1
  816.                   If Jdown(0)
  817.                      _START=1
  818.                   End If 
  819.                End If 
  820.                If Z=2
  821.                   If Btst(1,_DDIR)=0
  822.                      _START=1
  823.                   End If 
  824.                End If 
  825.                If Z=3
  826.                   If Btst(5,_DDIR)=0
  827.                      _START=1
  828.                   End If 
  829.                End If 
  830.                If Z=4
  831.                   If Key State(49)
  832.                      _START=1
  833.                   End If 
  834.                End If 
  835.                If Z=5
  836.                   If Btst(1,KK)
  837.                      _START=1
  838.                   End If 
  839.                End If 
  840.                If _START=1
  841.                   Inc TRADITIONALGAMESPLAYED
  842.                   Ink 0,0,0
  843.                   Bar ADX,ADY-4 To ADX+39,ADY+99
  844.                   _LEVEL(Z)=0
  845.                   _SCORE(Z)=0
  846.                   _MODE(Z)=0
  847.                   _ALIVE(Z)=1
  848.                   _PREVADD(Z)=0
  849.                   _ADDNEWBLOCK[Z]
  850.                End If 
  851.             End If 
  852.          End If 
  853.          
  854.       Else 
  855.          Ink 0,0,0
  856.          If TIM=>0
  857.             If _ALIVE(Z)=0
  858.                _DROP=0
  859.                If Z=0
  860.                   If Jdown(1)
  861.                      _DROP=1
  862.                   End If 
  863.                End If 
  864.                If Z=1
  865.                   If Jdown(0)
  866.                      _DROP=1
  867.                   End If 
  868.                End If 
  869.                If Z=2
  870.                   If Btst(1,_DDIR)=0
  871.                      _DROP=1
  872.                   End If 
  873.                End If 
  874.                If Z=3
  875.                   If Btst(5,_DDIR)=0
  876.                      _DROP=1
  877.                   End If 
  878.                End If 
  879.                If Z=4
  880.                   If Key State(49)
  881.                      _DROP=1
  882.                   End If 
  883.                End If 
  884.                If Z=5
  885.                   If Btst(1,KK)
  886.                      _DROP=1
  887.                   End If 
  888.                End If 
  889.                Bar ADX+36,ADY+94 To ADX+39,ADY+99
  890.                Paste Bob ADX+1,ADY+88,94
  891.                Paste Bob ADX+36,ADY+94,159+TIM
  892.                If _DROP=1
  893.                   _ALIVE(Z)=1
  894.                   _SCORE(Z)=0
  895.                   _MODE(Z)=0
  896.                   _PREVADD(Z)=0
  897.                   _ADDNEWBLOCK[Z]
  898.                   Bar ADX,ADY-4 To ADX+39,ADY+99
  899.                   Paste Bob ADX+2,ADY+40,100
  900.                End If 
  901.             End If 
  902.          Else 
  903.             If PPOKAY<>0
  904.                PPOKAY=0
  905.                Inc MULTIPLAYERGAMESPLAYED
  906.             End If 
  907.             Bar ADX,ADY-4 To ADX+39,ADY+99
  908.             If _ALIVE(Z)=0
  909.                Paste Bob ADX+1,ADY+30,95
  910.             End If 
  911.          End If 
  912.       End If 
  913.       
  914.       Add ADX,58
  915.       If ADX>127
  916.          ADX=11
  917.          ADY=132
  918.       End If 
  919.    Next 
  920.    
  921.    If _MODE<>1
  922.       NUMALIVE=0
  923.       For Z=0 To 5
  924.          If _ALIVE(Z)=1
  925.             Inc NUMALIVE
  926.          End If 
  927.       Next 
  928.       If NUMALIVE<=1
  929.          Timer=0
  930.       End If 
  931.       If NUMALIVE=6
  932.          Timer=300
  933.       End If 
  934.    End If 
  935.    
  936.    If _UPDATEHIGHSCORE=1
  937.       _UPDATEHIGHSCORE=0
  938.       _COPYALL=2
  939.       Ink 0,0,0
  940.       Bar 279,131 To 299,137
  941.       N$=Str$(HISCORE)
  942.       N$=Right$(N$,Len(N$)-1)
  943.       N$=String$("0",5-Len(N$))+N$
  944.       For Z=0 To 4
  945.          A$=Mid$(N$,Z+1,1)
  946.          Paste Bob 280+(Z*4),132,111+Asc(A$)
  947.       Next 
  948.    End If 
  949.    
  950.    Screen Copy 0,0,0,168,255 To 1,0,0
  951.    If _COPYALL>0
  952.       Dec _COPYALL
  953.       Screen Copy 0,180,125,319,184 To 1,180,125
  954.    End If 
  955.    Screen 1
  956.    
  957.    ' Do pause 
  958.    If Key State(95)
  959.       TTTT=Timer
  960.       Screen Swap 
  961.       Wait Vbl 
  962.       If _COPYALL>0
  963.          Dec _COPYALL
  964.          Screen Copy 0,0,0,319,255 To 1,0,0
  965.       Else 
  966.          Screen Copy 0,0,0,168,255 To 1,0,0
  967.       End If 
  968.       R=135
  969.       Screen Swap 
  970.       Wait Vbl 
  971.       Repeat 
  972.          Multi Wait 
  973.       Until Key State(95)=0
  974.       Repeat 
  975.          Add R,(Cos(R/2)*2)+3,0 To 719
  976.          N=0
  977.          T=(Sin(R*2)*30)+50
  978.          X=(Sin(R)*60)+140
  979.          Y=(Sin(R/2)*40)+120
  980.          For AD=0 To 359 Step 72
  981.             D=R+AD
  982.             Bob N,(Sin(D)*T)+X,(Cos(D)*T)+Y,96
  983.             Inc N
  984.          Next 
  985.          Bob Update 
  986.          Wait Vbl 
  987.       Until Key State(95)
  988.       For Z=0 To N-1
  989.          Bob Off Z
  990.       Next 
  991.       Bob Update 
  992.       Wait Vbl 
  993.       Bob Update 
  994.       Wait Vbl 
  995.       Repeat 
  996.          Multi Wait 
  997.       Until Key State(95)=0
  998.       Timer=TTTT
  999.    End If 
  1000.    
  1001.    ' Do screen shake
  1002.    Screen Display 1,,SCY,,
  1003.    Add SCY,SCYS
  1004.    If SCY>42
  1005.       Dec SCYS
  1006.    End If 
  1007.    If SCY<42
  1008.       Inc SCYS
  1009.    End If 
  1010.    If SCY=42
  1011.       If SCYS>0
  1012.          Dec SCYS
  1013.       End If 
  1014.       If SCYS<0
  1015.          Inc SCYS
  1016.       End If 
  1017.    End If 
  1018.    ' Do falling blocks  
  1019.    ADX=11
  1020.    ADY=0
  1021.    For Z=0 To 5
  1022.       If _MODE=1 or POKAY=0
  1023.          If _ALIVE(Z)=1
  1024.             
  1025.             If _MODE(Z)=0
  1026.                CB=_NEXTBLOCK(Z)
  1027.                Add CB,-1,0 To 999
  1028.                If _BLOCKT(Z)=0
  1029.                   TT=16-(_BLOCKR(Z)*4)
  1030.                   If TT>15
  1031.                      Add TT,-16
  1032.                   End If 
  1033.                   Paste Bob _BLOCKX(Z)+ADX,(_BLOCKY(Z)/8)+ADY,175+(_BLOCKS(CB)*16)+TT
  1034.                Else 
  1035.                   TT=((_BLOCKR(Z)-1)*4)+_BLOCKT(Z)
  1036.                   If TT<0
  1037.                      Add TT,16
  1038.                   End If 
  1039.                   Paste Bob _BLOCKX(Z)+ADX,(_BLOCKY(Z)/8)+ADY,175+(_BLOCKS(CB)*16)+(16-TT)
  1040.                End If 
  1041.             End If 
  1042.             
  1043.          End If 
  1044.          
  1045.       End If 
  1046.       
  1047.       Add ADX,58
  1048.       If ADX>127
  1049.          ADX=11
  1050.          ADY=132
  1051.       End If 
  1052.    Next 
  1053.    Screen Swap 
  1054.    Wait Vbl 
  1055.    Led Off 
  1056.    POKAY=PPOKAY
  1057. Until Key State(69)
  1058. _FINISH
  1059.  
  1060. Procedure _GT[X1,Y1,X2,Y2]
  1061.    Inc NNN
  1062.    Get Bob 0,NNN,X1,Y1 To X2,Y2
  1063. End Proc
  1064. Procedure _DOSCORE[PL]
  1065.    X=PL
  1066.    Y=0
  1067.    If X>2
  1068.       Add X,-3
  1069.       Y=1
  1070.    End If 
  1071.    X=X*58
  1072.    Y=Y*132
  1073.    X=X+31
  1074.    Y=Y+113
  1075.    Ink 0,0,0
  1076.    Bar X-1,Y-1 To X+19,Y+5
  1077.    N$=Str$(_SCORE(PL))
  1078.    N$=Right$(N$,Len(N$)-1)
  1079.    N$=String$("0",5-Len(N$))+N$
  1080.    For Z=0 To 4
  1081.       A$=Mid$(N$,Z+1,1)
  1082.       Paste Bob X+(Z*4),Y,111+Asc(A$)
  1083.    Next 
  1084. End Proc
  1085.  
  1086. Procedure _UPDATENEXTBLOCK[PL]
  1087.    Add _NEXTBLOCK(PL),1,0 To 999
  1088.    X=PL
  1089.    Y=0
  1090.    If X>2
  1091.       Add X,-3
  1092.       Y=1
  1093.    End If 
  1094.    X=X*58
  1095.    Y=Y*132
  1096.    X=X+12
  1097.    Y=Y+114
  1098.    Ink 0,0,0
  1099.    Bar X-7,Y-3 To X+8,Y+4
  1100.    For Z=0 To 3
  1101.       Paste Bob X+_BLOCKDATAX(_BLOCKS(_NEXTBLOCK(PL)),Z),Y+_BLOCKDATAY(_BLOCKS(_NEXTBLOCK(PL)),Z),119+(_BLOCKS(_NEXTBLOCK(PL))*6)
  1102.    Next 
  1103. End Proc
  1104.  
  1105. Procedure _ADDNEWBLOCK[PL]
  1106.    If _PREVADD(PL)=1
  1107.       _ALIVE(PL)=-1
  1108.       If _MODE<>1
  1109.          NUMALIVE=0
  1110.          NADX=11
  1111.          NADY=0
  1112.          For Z=0 To 5
  1113.             If _ALIVE(Z)=1
  1114.                Inc NUMALIVE
  1115.                NNADX=NADX
  1116.                NNADY=NADY
  1117.                WHOALIVE=Z
  1118.             End If 
  1119.             Add NADX,58
  1120.             If NADX>127
  1121.                NADX=11
  1122.                NADY=132
  1123.             End If 
  1124.          Next 
  1125.          If NUMALIVE=1
  1126.             Paste Bob NNADX+1,NNADY+18,99
  1127.             _DELAY=1
  1128.             For Z=0 To 5
  1129.                Bob Off Z
  1130.             Next 
  1131.          End If 
  1132.       End If 
  1133.       If _MODE=1
  1134.          Paste Bob ADX+1,ADY+1,95
  1135.          Paste Bob ADX+2,ADY+35,98
  1136.       Else 
  1137.          Paste Bob ADX+1,ADY+32,95
  1138.       End If 
  1139.    Else 
  1140.       _BLOCKX(PL)=12
  1141.       _BLOCKAX(PL)=12
  1142.       _BLOCKR(PL)=0
  1143.       _BLOCKT(PL)=0
  1144.       _BLOCKY(PL)=-32
  1145.       _BLOCKYS(PL)=0
  1146.       _PREVADD(PL)=1
  1147.       _UPDATENEXTBLOCK[PL]
  1148.    End If 
  1149. End Proc
  1150.  
  1151. Procedure _UPDATEGAMEMODE
  1152.    N=0
  1153.    For Y=125 To 170 Step 15
  1154.       Inc N
  1155.       Paste Bob 180,Y,(N*2)+101+(N<>_MODE)
  1156.    Next 
  1157. End Proc
  1158.  
  1159. Procedure _FINISH
  1160.    Fade 1
  1161.    Wait 15
  1162.    If Extension_18_0248("S:")=2
  1163.       If Exist("S:6-Tris.Dat")
  1164.          Kill "S:6-Tris.Dat"
  1165.       End If 
  1166.       Open Out 1,"S:6-Tris.Dat"
  1167.       Print #1,TIMESLOADED
  1168.       Print #1,MULTIPLAYERGAMESPLAYED
  1169.       Print #1,TRADITIONALGAMESPLAYED
  1170.       Print #1,HISCORE
  1171.       Close 1
  1172.    End If 
  1173.    Amal Off 
  1174.    Sprite Off 
  1175.    Screen Close 0
  1176.    Screen Close 1
  1177.    Erase 1
  1178.    Track Stop 
  1179.    End 
  1180. End Proc
  1181.  
  1182. TYPEDAT:
  1183. Data " welcome to >=six^tris=> by james daniels"
  1184. Data "              THE ONE AND only SIX PLAYER"
  1185. Data "                 TETRIS GAME IN THE world"
  1186. Data "                  (AND ITS FREEWARE TOO!)"
  1187. Data "&how to play]"
  1188. Data " "
  1189. Data " IT'S tetris. HOWEVER, IT DOES HAVE A FEW"
  1190. Data " 'UNIQUE' FEATURES, SUCH AS, OF COURSE,"
  1191. Data " THE SIX PLAYER MODE. IN FACT, THERE ARE"
  1192. Data " TWO SIX PLAYER MODES; AS WELL AS A SIX-"
  1193. Data " GAMES-AT-ONCE-BUT-NOT-AGAINST-EACH-OTHER"
  1194. Data " SCENARIO. HERE IS A RUN-DOWN OF EACH OF"
  1195. Data " THE GAME TYPES:"
  1196. Data " "
  1197. Data " *separate - SIX SEPARATE GAMES OF TETRIS"
  1198. Data "  IE. WHAT ONE PLAYER DOES HAS NO EFFECT"
  1199. Data "  ON THE OTHER PLAYERS."
  1200. Data " "
  1201. Data " *all against all - WHEN ANY PLAYER GETS"
  1202. Data "  TWO LINES OR MORE, THE LINES ARE PASSED"
  1203. Data "  TO ALL PLAYERS. NOTE THAT ONE LESS LINE"
  1204. Data "  THAN THE NUMBER REALLY COMPLETED WILL"
  1205. Data "  ACTUALLY APPEAR ON THE OPPONENT'S"
  1206. Data "  SCREEN. IE. GETTING FOUR LINES WILL"
  1207. Data "  ONLY RESULT IN THE OTHER PLAYERS"
  1208. Data "  RECEIVING 3 LINES. WHEN THE LINES ARE"
  1209. Data "  PASSED, THEY WILL APPEAR IN THE COLOUR"
  1210. Data "  OF THE PLAYER THAT SENT THEM."
  1211. Data " "
  1212. Data " *against locals - PROBABLY THE BEST"
  1213. Data "  METHOD OF PLAYING. WHEN A PLAYER GETS A"
  1214. Data "  LINE, IT IS PASSED TO THOSE TO EITHER"
  1215. Data "  SIDE. IE. IF THE PLAYER WHO GOT THE"
  1216. Data "  LINES IS PLAYER 3, THE PLAYERS 2 AND 4"
  1217. Data "  WILL RECEIVE THEM. IF PLAYER 1 GETS"
  1218. Data "  SOME LINES, THEN PLAYERS 2 AND 6 WILL"
  1219. Data "  RECEIVE THEM. NOTE THAT THESE LINES"
  1220. Data "  WILL BE REDUCED IN NUMBER AS DESCRIBED"
  1221. Data "  IN all against all."
  1222. Data " "
  1223. Data "\\\\\\\\\\\PRESS SOMETHING TO CONTINUE..."
  1224. Data "BREAK"
  1225. Data "&controls]"
  1226. Data " "
  1227. Data " THE CONTROL METHODS USED BY EACH OF THE"
  1228. Data " PLAYERS ARE AS FOLLOWS:"
  1229. Data " "
  1230. Data " PLAYER 1 % left joystick"
  1231. Data " PLAYER 2 _ right joystick"
  1232. Data " PLAYER 3 @ left joystick (ADAPTOR)"
  1233. Data " PLAYER 4 $ right joystick (ADAPTOR)"
  1234. Data " PLAYER 5 ` keyboard one"
  1235. Data " PLAYER 6 * keyboard two"
  1236. Data " "
  1237. Data " THE WAY IN WHICH YOU SHOULD USE THESE"
  1238. Data " CONTROLS IS EXPLAINED BELOW:"
  1239. Data " "
  1240. Data " method rotate  drop    left    right"
  1241. Data " KEYS 1 S       Z       L-ALT   L-AMIGA"
  1242. Data " KEYS 2 RETURN  R-SHIFT R-AMIGA R-ALT"
  1243. Data " JOYS   UP/FIRE DOWN    LEFT    RIGHT"
  1244. Data " "
  1245. Data " "
  1246. Data "&other keys]"
  1247. Data " "
  1248. Data " (ESC)APE - quits game"
  1249. Data "     HELP - pauses game"
  1250. Data "            press again to resume"
  1251. Data " "
  1252. Data " "
  1253. Data "&contact the author]"
  1254. Data " "
  1255. Data " address] 54 KNOWLES AVENUE, CROWTHORNE,"
  1256. Data "          BERKS, RG45 6DU, ENGLAND."
  1257. Data " e^mail] J.R.DANIELS<WARWICK.AC.UK"
  1258. Data " www] HTTP://WWW.WARWICK.AC.UK/#CSUAW"
  1259. Data " "
  1260. Data " (TO SEND BUG REPORTS, IDEAS AND"
  1261. Data "             BEST SCORES THAT BEAT MINE!)"
  1262. Data " "
  1263. Data " IN SEPERATE MODE, MY TOP SCORE IS _1883_"
  1264. Data " "
  1265. Data "\\\\\\\\\\\PRESS SOMETHING TO CONTINUE..."
  1266. Data "BREAK"
  1267. Data "&credits]"
  1268. Data " "
  1269. Data " coding % JAMES DANIELS % idea % ALEXEY"
  1270. Data " PAJITNOV % graphics % JAMES DANIELS %"
  1271. Data " music % BIT ARTS % playtesters % CLAIRE"
  1272. Data " BERRETT % JAMES DANIELS % BERNARD"
  1273. Data " L'ALLIER % CHRISTOPHER DANIELS % MATTHEW"
  1274. Data " AGAR % PAUL L'ALLIER % JONATHAN HUGHES %"
  1275. Data " GERALD YUEN % RATTI MARIO % BECKER"
  1276. Data " JACQUES % MAX ROBINSON % TOBY HIGSON %"
  1277. Data " TIM SPENCER % DARREN BISHOP % IAN FALCON"
  1278. Data " MARKY BRETT % CAROLINE KLEMPKA % ANDREW"
  1279. Data " DISTON % SOPHIE PARKER % CLAIRE MORELAND"
  1280. Data " "
  1281. Data "&about the game]"
  1282. Data " "
  1283. Data " THIS PROGRAM WAS WRITTEN USING:"
  1284. Data " *AMOS PROFESSIONAL V2"
  1285. Data " *DPAINT IV AGA"
  1286. Data " *OCTAMED V5.04"
  1287. Data " *SOUNDS TERRIFIC CD"
  1288. Data " "
  1289. Data " THE MACHINE IT WAS WRITTEN ON LOOKS LIKE"
  1290. Data " THIS:"
  1291. Data " @ A1200/040/25MHZ @ 6MB RAM @ 1.8GB HD @"
  1292. Data " @ AIWA 2X CD-ROM @ EXTERNAL DISK DRIVE @"
  1293. Data " @ 200 W  PSU @ MICROVITEC 1438 MONITOR @"
  1294. Data " @ 560 DPI MOUSE @ SQUIRREL SCSI I'FACE @"
  1295. Data " "
  1296. Data " "
  1297. Data "&statistics]"
  1298. Data " "
  1299. Data " TIMES LOADED -"+Str$(TIMESLOADED)
  1300. Data " MULTIPLAYER GAMES PLAYED -"+Str$(MULTIPLAYERGAMESPLAYED)
  1301. Data " TRADITIONAL GAMES PLAYED -"+Str$(TRADITIONALGAMESPLAYED)
  1302. Data " AVERAGE GAMES PER LOAD -"+Str$(TEMP#)
  1303. Data " "
  1304. Data " "
  1305. Data " "
  1306. Data "\\\\\\\\\\\PRESS SOMETHING TO CONTINUE..."
  1307. Rem***12345678901234567890123456789012345678901* 
  1308. Data "END"
  1309.  
  1310. BLOCKSDAT:
  1311. Data -8,-4,-4,-4,0,-4,4,-4
  1312. Data -8,-4,-4,-4,-4,0,0,0
  1313. Data -4,-4,0,-4,0,0,-4,0
  1314. Data -8,0,-4,0,-4,-4,0,-4
  1315. Data -8,0,-8,-4,-4,-4,0,-4
  1316. Data -8,-4,-4,-4,0,-4,0,0
  1317. Data -8,0,-4,0,0,0,-4,-4
  1318.  
  1319. ' **** **  **  ** *** ***  * 
  1320. '       ** ** **  *     * ***